Skip to content

PHPC-2478: Implement API for bulkWrite command #1790

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 20 commits into from
Apr 16, 2025

Conversation

jmikola
Copy link
Member

@jmikola jmikola commented Feb 18, 2025

https://jira.mongodb.org/browse/PHPC-2478

This supersedes #1763 and rebases the work on the v2.x branch.

@jmikola jmikola force-pushed the 2.x-bulkwrite branch 3 times, most recently from 79e33fc to 786f1cc Compare February 28, 2025 17:57
jmikola added a commit to jmikola/mongo-php-library that referenced this pull request Mar 7, 2025
@jmikola jmikola force-pushed the 2.x-bulkwrite branch 2 times, most recently from ad72834 to 4a48529 Compare March 13, 2025 18:29
jmikola added 19 commits March 14, 2025 14:06
It was possible to reuse WriteConcernError and WriteError with slight changes to their init functions.
This was not necessary for compilation, but it makes the header internally consistent.
Always return arrays for writeErrors and writeConcernErrors
Per CDRIVER-5843, libmongoc does not consistently populate this field. It also isn't required by the spec, so omit it for now.
Result maps should only be null if verboseResults=false. Additionally, the error reply document can default to an empty document on error (as it is in libmongoc).
Revise the stubs to reflect that executeBulkWriteCommand() always returns a BulkWriteCommandResult. If the result is unacknowledged, that is reported via isAcknowledged() and other methods can throw, which is consistent with WriteResult for the legacy bulk write API.

If the result is empty on error (i.e. no writes were successful), BulkWriteCommandException::$partialResult is left unset.
This also ensures that BulkWriteCommandException uses the original server-side error code and message (if available) for top-level errors.
jmikola added a commit to jmikola/mongo-php-library that referenced this pull request Mar 14, 2025
jmikola added a commit to jmikola/mongo-php-library that referenced this pull request Mar 21, 2025
jmikola added a commit to jmikola/mongo-php-library that referenced this pull request Mar 21, 2025
jmikola added a commit to jmikola/mongo-php-library that referenced this pull request Mar 24, 2025
jmikola added a commit to jmikola/mongo-php-library that referenced this pull request Mar 31, 2025
jmikola added a commit to jmikola/mongo-php-library that referenced this pull request Apr 1, 2025
mongoc_bulkwriteexception_errorreply() always returns an initialized document, but it may be empty. This ensures that an InvalidArgumentException is not unnecessarily proxied behind a BulkWriteCommandException.
@jmikola jmikola requested review from alcaeus and GromNaN April 4, 2025 18:01
@GromNaN GromNaN changed the base branch from v2.x to feature/client-bulk-write April 15, 2025 14:09
@GromNaN GromNaN requested a review from a team as a code owner April 15, 2025 14:09
Copy link
Member

@GromNaN GromNaN left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I created the feature/client-bulk-write branch to continue work (add tests).

@alcaeus alcaeus merged commit 3929480 into mongodb:feature/client-bulk-write Apr 16, 2025
60 checks passed
@GromNaN GromNaN mentioned this pull request Apr 16, 2025
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants